<?php
// 数组相关库

/*array转xml*/
function arrayToXml($arr): string
{
	$xml = "<xml>";
	foreach ($arr as $key => $val) {
		if (is_numeric($val)) {
			$xml .= "<$key>$val</$key>";
		} else {
			$xml .= "<$key><![CDATA[$val]]></$key>";
		}
	}
	$xml .= "</xml>";
	return $xml;
}

/*将XML转为array*/
function xmlToArray($xml)
{
	$array = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); //把 XML 字符串载入对象中,LIBXML_NOCDATA为附加的Libxml参数。意为把 CDATA 设置为文本节点。
	$array = json_encode($array);                                             //对除resource（资源类型，保存了到外部资源的一个引用）类型之外的任何数据类型进行JSON编码
	//接受一个 JSON 格式的字符串并且把它转换为 PHP 变量，当该参数为 TRUE 时，将返回 array 而非 object 。
	return json_decode($array, true);
}

function getVal(array $array, $key, $default = '')
{
    return $array[$key] ?? $default;
}

function post($key): array|string|null
{
	return isset($_POST[$key]) ? formSubArray($_POST[$key]) : null;
}

function gets($key): array|string|null
{
	return isset($_GET[$key]) ? formSubArray($_GET[$key]) : null;
}




/**
 * 获取同数组中多key的值
 *
 * @param $array
 * @param $key
 * @param $key2
 * @return null
 */
function V($array, $key, $key2 = null)
{
	if ($key2) {
		return in_array($key, array_keys($array)) ? $array[$key] : V($array, $key2);
	} else {
		return in_array($key, array_keys($array)) ? $array[$key] : null;
	}
}
